rm(list = ls(all = TRUE)) #limpiar workspace
setwd("~/REDISTRICTING/ELECCION_2006")

# ---------
# Read data
# ---------
conteo <- read.table("poblacion_distrito_2005.txt", header=TRUE, sep=",")
computo <- read.table("DIPUTADOS_2006.txt", header=TRUE, sep="\t")
computo <- merge(computo, 
                 data.frame(ENTIDAD.FEDERATIVA=levels(computo$ENTIDAD.FEDERATIVA),
                            Estado=c(1:4, 7:8, 5:6, 9:32)),
                 by="ENTIDAD.FEDERATIVA")  
# Merge
data <- merge(computo, conteo[,1:3], 
              by.x=c("Estado", "DISTRITO"),
              by.y=c("Estado", "Distrito"))

#----------
# Barplot
#----------
Mayoritarios <- rowSums(data[,c("PAN","ALIANZA.POR.MÉXICO","POR.EL.BIEN.DE.TODOS")])
df <- data.frame(Mayoritarios = Mayoritarios,
                 Participacion = data$TOTAL-Mayoritarios,
                 Lista.Nominal = data$LISTA.NOMINAL-data$TOTAL,
                 Poblacion = data$Pob_tot-data$LISTA.NOMINAL)

# paleta de color
require(RColorBrewer)
col <- brewer.pal(ncol(df), "Purples")

# Function
mi.plot <- function(x) {
  barplot(x, xlab="(Miles)", col=col, horiz=TRUE, xlim=xlim, border=NA, cex.names=0.7)
  axis(3)
  abline(v=seq(0,500,100), col = "gray", lty = "dotted")
}

# Plot
pdf("barplot.pdf", 9, 8)
par(mfrow=c(1,2), yaxs="i", cex=.9)
  # Ordenar por poblacion total
  sorted.df <- df[order(data$Pob_tot),]/1000
  rownames(sorted.df) <- 300:1
  # Rango
  xlim <- c(0, max(data$Pob_tot/1000))
  # Plot
  mi.plot(t(as.matrix(sorted.df[151:300,])))
  mi.plot(t(as.matrix(sorted.df[1:150,])))
  legend("bottomright", legend=rev(names(df)), pch=15, col=rev(col), bty="n", cex=0.8)
dev.off()

#----------
# Density
#----------
partidos <- c("PAN","ALIANZA.POR.MÉXICO","POR.EL.BIEN.DE.TODOS","NUEVA.ALIANZA","ALTERNATIVA")
Ganador <- apply(data[,partidos], 1, function(x) names(which.max(x)))
Max <- apply(data[,partidos], 1, max)

mi.plot <- function(x, main) {
  PAN <- density(x[Ganador=="PAN"])
  PRI <- density(x[Ganador=="ALIANZA.POR.MÉXICO"], bw=PAN$bw)
  PRD <- density(x[Ganador=="POR.EL.BIEN.DE.TODOS"], bw=PAN$bw)
  xlim <- range(PAN$x, PRI$x, PRD$x)
  ylim <- range(PAN$y, PRI$y, PRD$y)
  plot(PAN, col="royalblue3", lwd=2, main=main, xlim=xlim, ylim=ylim, xlab="(Miles)")
  lines(PRI, col="firebrick", lwd=2)
  lines(PRD, col="gold3", lwd=2)
}

pdf("density.pdf", 7,7)
par(mfrow=c(2,2))
  mi.plot(data$Pob_tot/1000, main="Población Total")
  mi.plot(data$LISTA.NOMINAL/1000, main="Lista Nominal")
  mi.plot(data$TOTAL/1000, main="Votantes")
  mi.plot((data$TOTAL-Mayoritarios)/1000, main="Votos partidos minoritarios")
dev.off()

## Miscelanea
mi.plot(Max/1000, main="Votos del ganador (miles)")

by(data$Pob_tot/1000, Ganador, mean)
by(data$LISTA.NOMINAL/1000, Ganador, mean)
by(data$TOTAL/1000, Ganador, mean)
by((data$TOTAL-Mayoritarios)/1000, Ganador, mean)

sd(data$Pob_tot)
sd(data$LISTA.NOMINAL)
sd(data$TOTAL)

cor(data$Pob_tot, data$TOTAL)
cor(data$LISTA.NOMINAL, data$TOTAL)
cor(Max, data$TOTAL)